home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / util / text / megaed12.lha / MegaEdV1_2 / Trans / Devpac2.trans.c < prev    next >
C/C++ Source or Header  |  1995-02-18  |  2KB  |  95 lines

  1. /*
  2. ** MCPP.trans: Konvertiert Maxon C Fehlerdateien für MegaEd
  3. ** von M-J, 100% PD
  4. */
  5.  
  6. #include <exec/memory.h>
  7. #include <dos/dos.h>
  8. #include <dos/dostags.h>
  9. #include <string.h>
  10.  
  11. void main(void)
  12. {
  13.  const char *file1="T:MegaEdMake-ErrFile";
  14.  const char *file2="T:MegaEdMake-Errors";
  15.  BPTR con;
  16.  BPTR fileh;
  17.  char *old=NULL,*new=NULL;
  18.  char *off, *off2, *dest, *last;
  19.  LONG len;
  20.  short i;
  21.  BOOL errors=FALSE;
  22.                              //MCPP Datei lesen
  23.  if(!(fileh=Open(file1,MODE_OLDFILE))) return;
  24.  Seek(fileh,0,OFFSET_END);
  25.  len=Seek(fileh,0,OFFSET_BEGINNING);
  26.  if(len)
  27.  {
  28.   if(!(old=(char*)AllocVec(len+1,MEMF_PUBLIC)))
  29.    {Close(fileh); return;}
  30.   if(Read(fileh,old,len)!=len)
  31.    {FreeVec(old); Close(fileh); return;}
  32.  }
  33.  Close(fileh);
  34.  if(!len) return;
  35.  old[len]=0;
  36.                             // Konvertierung
  37.  if(!(new=(char*)AllocVec(len+1,MEMF_PUBLIC))) return;
  38.  dest=new;
  39.  
  40.  off=old;
  41.  for(i=0;;i++)
  42.  {
  43.   if(i==5) goto esc;
  44.   if(i>=3 && strncmp(off,"Pass",4)) break;
  45.   if(!(off=strchr(off,10))) goto esc;
  46.   off++;
  47.  }
  48.  
  49.  for(;;)
  50.  {
  51.   if((off2=strchr(off,10))) *off2=0;
  52.   if(!*off) break;
  53.   
  54.   off2=off;
  55.   if(strncmp(off,"Warn",4)) *dest='E';
  56.   else *dest='W';
  57.   dest++;
  58.  
  59.   for(;*off;off++)
  60.    if(isdigit(*off)) break;
  61.   if(!*off) break;
  62.   
  63.   for(;isdigit(*off);off++,dest++) *dest=*off;
  64.   if(!*off) break;
  65.   *dest='/'; dest++;
  66.   *dest='1'; dest++;
  67.   *dest=10; dest++;
  68.  
  69.   strcpy(dest,off2);
  70.   dest+=strlen(dest);
  71.   *dest=10;
  72.   dest++;
  73.   off+=strlen(off)+1;
  74.   last=dest;
  75.   errors=TRUE;
  76.  
  77.   if(!(off=strchr(off,10))) break;
  78.   off++;
  79.  }
  80.  esc:
  81.  if(errors)
  82.  {
  83.   if(fileh=Open(file2,MODE_NEWFILE))
  84.   {
  85.    len=(LONG)last-(LONG)new;
  86.    Write(fileh,new,len);
  87.    Close(fileh);
  88.   }
  89.  }
  90.  else DeleteFile(file2);
  91.  if(old) FreeVec(old);
  92.  if(new) FreeVec(new);
  93. }
  94.  
  95.